Skip to content

[Release v1.3.0] - #83

Merged
nu-jliu merged 1 commit into
mainfrom
release/v1.3.0
Aug 6, 2026
Merged

[Release v1.3.0]#83
nu-jliu merged 1 commit into
mainfrom
release/v1.3.0

Conversation

@nu-jliu

@nu-jliu nu-jliu commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Release v1.3.0 mirrors the current dev/JH_i2rt-main content into the public repository. It adds versioned arm models, YAM Ultra v2 support, MCAP recording, refreshed examples, and the aligned URDF/MJCF tooling. Per release direction, pyproject.toml remains at package version 1.1.2; its change only adds the MCAP dependency.

Changes

  • .agents/skills/align-urdf-mjcf/SKILL.md: add Codex-native guidance for regenerating and validating aligned URDF and MJCF arm models
  • .agents/skills/align-urdf-mjcf/scripts/sync_gripper_mounts.py: add the tool that propagates versioned terminal-mount transforms into every gripper configuration
  • .agents/skills/align-urdf-mjcf/scripts/urdf_to_arm_mjcf.py: add the deterministic URDF-to-arm-MJCF generator
  • .agents/skills/transform-onshape-urdf/SKILL.md: add Codex-native guidance for normalizing and orienting ONShape URDF exports
  • .agents/skills/transform-onshape-urdf/scripts/apply_urdf_heading.py: add the tool that bakes an operator-selected heading into URDF geometry and inertia
  • .agents/skills/transform-onshape-urdf/scripts/normalize_onshape_urdf.py: add deterministic ONShape URDF cleanup and frame normalization
  • .agents/skills/transform-onshape-urdf/scripts/urdf_align_lib.py: add shared transform, mesh, and forward-kinematics helpers for the alignment pipeline
  • .agents/skills/transform-onshape-urdf/scripts/view_urdf.py: add the visual inspection step used before committing a URDF heading
  • .claude/skills/align-urdf-mjcf/SKILL.md: update Claude alignment guidance for versioned arm layouts and terminal-mount composition
  • .claude/skills/align-urdf-mjcf/scripts/sync_gripper_mounts.py: update gripper-mount synchronization for arm model versions
  • .claude/skills/align-urdf-mjcf/scripts/urdf_to_arm_mjcf.py: update MJCF generation for the versioned model layout and gripper mount frame
  • .claude/skills/transform-onshape-urdf/SKILL.md: update the ONShape transformation workflow for versioned source models
  • .claude/skills/transform-onshape-urdf/scripts/normalize_onshape_urdf.py: update normalization logic for the aligned versioned model pipeline
  • .codex/skills/align-urdf-mjcf/SKILL.md: update Codex alignment guidance to match the version-aware robot model contract
  • AGENTS.md: add Codex project architecture, workflow, and verification guidance
  • CLAUDE.md: document versioned arm models, runtime gripper composition, recording, and alignment behavior
  • examples/control_with_mujoco/README.md: document hardware-version selection and recording options for the MuJoCo control example
  • examples/control_with_mujoco/control_with_mujoco.py: propagate arm model versions and optional MCAP recording through the MuJoCo control example
  • examples/control_with_viser/README.md: document hardware-version selection and recording options for the Viser example
  • examples/control_with_viser/control_with_viser.py: propagate arm model versions and optional MCAP recording through the Viser control example
  • examples/minimum_gello/README.md: document the stale-command timeout used to prevent growing teleoperation lag
  • examples/minimum_gello/minimum_gello.py: drop stale follower commands and expose the maximum accepted command age
  • i2rt/robot_models/__init__.py: resolve versioned arm model paths while preserving v1 compatibility aliases
  • i2rt/robot_models/arm/big_yam/README.md -> i2rt/robot_models/arm/big_yam/v1/README.md: move and update the arm documentation from i2rt/robot_models/arm/big_yam/README.md to the versioned v1 path i2rt/robot_models/arm/big_yam/v1/README.md
  • i2rt/robot_models/arm/big_yam/assets/base.stl -> i2rt/robot_models/arm/big_yam/v1/assets/base.stl: move the base.stl mesh from i2rt/robot_models/arm/big_yam/assets/base.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/base.stl
  • i2rt/robot_models/arm/big_yam/assets/gripper.stl -> i2rt/robot_models/arm/big_yam/v1/assets/gripper.stl: move the gripper.stl mesh from i2rt/robot_models/arm/big_yam/assets/gripper.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/gripper.stl
  • i2rt/robot_models/arm/big_yam/assets/link1.stl -> i2rt/robot_models/arm/big_yam/v1/assets/link1.stl: move the link1.stl mesh from i2rt/robot_models/arm/big_yam/assets/link1.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/link1.stl
  • i2rt/robot_models/arm/big_yam/assets/link2.stl -> i2rt/robot_models/arm/big_yam/v1/assets/link2.stl: move the link2.stl mesh from i2rt/robot_models/arm/big_yam/assets/link2.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/link2.stl
  • i2rt/robot_models/arm/big_yam/assets/link3.stl -> i2rt/robot_models/arm/big_yam/v1/assets/link3.stl: move the link3.stl mesh from i2rt/robot_models/arm/big_yam/assets/link3.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/link3.stl
  • i2rt/robot_models/arm/big_yam/assets/link4.stl -> i2rt/robot_models/arm/big_yam/v1/assets/link4.stl: move the link4.stl mesh from i2rt/robot_models/arm/big_yam/assets/link4.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/link4.stl
  • i2rt/robot_models/arm/big_yam/assets/link5.stl -> i2rt/robot_models/arm/big_yam/v1/assets/link5.stl: move the link5.stl mesh from i2rt/robot_models/arm/big_yam/assets/link5.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/link5.stl
  • i2rt/robot_models/arm/big_yam/assets/tip_left.stl -> i2rt/robot_models/arm/big_yam/v1/assets/tip_left.stl: move the tip_left.stl mesh from i2rt/robot_models/arm/big_yam/assets/tip_left.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/tip_left.stl
  • i2rt/robot_models/arm/big_yam/assets/tip_right.stl -> i2rt/robot_models/arm/big_yam/v1/assets/tip_right.stl: move the tip_right.stl mesh from i2rt/robot_models/arm/big_yam/assets/tip_right.stl to the versioned v1 asset path i2rt/robot_models/arm/big_yam/v1/assets/tip_right.stl
  • i2rt/robot_models/arm/big_yam/big_yam.urdf -> i2rt/robot_models/arm/big_yam/v1/big_yam.urdf: move the URDF source from i2rt/robot_models/arm/big_yam/big_yam.urdf to the versioned v1 path i2rt/robot_models/arm/big_yam/v1/big_yam.urdf
  • i2rt/robot_models/arm/big_yam/big_yam.xml -> i2rt/robot_models/arm/big_yam/v1/big_yam.xml: move the MJCF model from i2rt/robot_models/arm/big_yam/big_yam.xml to i2rt/robot_models/arm/big_yam/v1/big_yam.xml and retain the v1-aligned model
  • i2rt/robot_models/arm/yam/README.md -> i2rt/robot_models/arm/yam/v1/README.md: move and update the arm documentation from i2rt/robot_models/arm/yam/README.md to the versioned v1 path i2rt/robot_models/arm/yam/v1/README.md
  • i2rt/robot_models/arm/yam/assets/base.stl -> i2rt/robot_models/arm/yam/v1/assets/base.stl: move the base.stl mesh from i2rt/robot_models/arm/yam/assets/base.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/base.stl
  • i2rt/robot_models/arm/yam/assets/gripper.stl -> i2rt/robot_models/arm/yam/v1/assets/gripper.stl: move the gripper.stl mesh from i2rt/robot_models/arm/yam/assets/gripper.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/gripper.stl
  • i2rt/robot_models/arm/yam/assets/link1.stl -> i2rt/robot_models/arm/yam/v1/assets/link1.stl: move the link1.stl mesh from i2rt/robot_models/arm/yam/assets/link1.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/link1.stl
  • i2rt/robot_models/arm/yam/assets/link2.stl -> i2rt/robot_models/arm/yam/v1/assets/link2.stl: move the link2.stl mesh from i2rt/robot_models/arm/yam/assets/link2.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/link2.stl
  • i2rt/robot_models/arm/yam/assets/link3.stl -> i2rt/robot_models/arm/yam/v1/assets/link3.stl: move the link3.stl mesh from i2rt/robot_models/arm/yam/assets/link3.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/link3.stl
  • i2rt/robot_models/arm/yam/assets/link4.stl -> i2rt/robot_models/arm/yam/v1/assets/link4.stl: move the link4.stl mesh from i2rt/robot_models/arm/yam/assets/link4.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/link4.stl
  • i2rt/robot_models/arm/yam/assets/link5.stl -> i2rt/robot_models/arm/yam/v1/assets/link5.stl: move the link5.stl mesh from i2rt/robot_models/arm/yam/assets/link5.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/link5.stl
  • i2rt/robot_models/arm/yam/assets/tip_left.stl -> i2rt/robot_models/arm/yam/v1/assets/tip_left.stl: move the tip_left.stl mesh from i2rt/robot_models/arm/yam/assets/tip_left.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/tip_left.stl
  • i2rt/robot_models/arm/yam/assets/tip_right.stl -> i2rt/robot_models/arm/yam/v1/assets/tip_right.stl: move the tip_right.stl mesh from i2rt/robot_models/arm/yam/assets/tip_right.stl to the versioned v1 asset path i2rt/robot_models/arm/yam/v1/assets/tip_right.stl
  • i2rt/robot_models/arm/yam/yam.urdf -> i2rt/robot_models/arm/yam/v1/yam.urdf: move the URDF source from i2rt/robot_models/arm/yam/yam.urdf to the versioned v1 path i2rt/robot_models/arm/yam/v1/yam.urdf
  • i2rt/robot_models/arm/yam/yam.xml -> i2rt/robot_models/arm/yam/v1/yam.xml: move the MJCF model from i2rt/robot_models/arm/yam/yam.xml to i2rt/robot_models/arm/yam/v1/yam.xml and retain the v1-aligned model
  • i2rt/robot_models/arm/yam_pro/README.md -> i2rt/robot_models/arm/yam_pro/v1/README.md: move and update the arm documentation from i2rt/robot_models/arm/yam_pro/README.md to the versioned v1 path i2rt/robot_models/arm/yam_pro/v1/README.md
  • i2rt/robot_models/arm/yam_pro/assets/base.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/base.stl: move the base.stl mesh from i2rt/robot_models/arm/yam_pro/assets/base.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/base.stl
  • i2rt/robot_models/arm/yam_pro/assets/gripper.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/gripper.stl: move the gripper.stl mesh from i2rt/robot_models/arm/yam_pro/assets/gripper.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/gripper.stl
  • i2rt/robot_models/arm/yam_pro/assets/link1.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/link1.stl: move the link1.stl mesh from i2rt/robot_models/arm/yam_pro/assets/link1.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/link1.stl
  • i2rt/robot_models/arm/yam_pro/assets/link2.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/link2.stl: move the link2.stl mesh from i2rt/robot_models/arm/yam_pro/assets/link2.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/link2.stl
  • i2rt/robot_models/arm/yam_pro/assets/link3.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/link3.stl: move the link3.stl mesh from i2rt/robot_models/arm/yam_pro/assets/link3.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/link3.stl
  • i2rt/robot_models/arm/yam_pro/assets/link4.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/link4.stl: move the link4.stl mesh from i2rt/robot_models/arm/yam_pro/assets/link4.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/link4.stl
  • i2rt/robot_models/arm/yam_pro/assets/link5.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/link5.stl: move the link5.stl mesh from i2rt/robot_models/arm/yam_pro/assets/link5.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/link5.stl
  • i2rt/robot_models/arm/yam_pro/assets/tip_left.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/tip_left.stl: move the tip_left.stl mesh from i2rt/robot_models/arm/yam_pro/assets/tip_left.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/tip_left.stl
  • i2rt/robot_models/arm/yam_pro/assets/tip_right.stl -> i2rt/robot_models/arm/yam_pro/v1/assets/tip_right.stl: move the tip_right.stl mesh from i2rt/robot_models/arm/yam_pro/assets/tip_right.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_pro/v1/assets/tip_right.stl
  • i2rt/robot_models/arm/yam_pro/yam_pro.urdf -> i2rt/robot_models/arm/yam_pro/v1/yam_pro.urdf: move the URDF source from i2rt/robot_models/arm/yam_pro/yam_pro.urdf to the versioned v1 path i2rt/robot_models/arm/yam_pro/v1/yam_pro.urdf
  • i2rt/robot_models/arm/yam_pro/yam_pro.xml -> i2rt/robot_models/arm/yam_pro/v1/yam_pro.xml: move the MJCF model from i2rt/robot_models/arm/yam_pro/yam_pro.xml to i2rt/robot_models/arm/yam_pro/v1/yam_pro.xml and retain the v1-aligned model
  • i2rt/robot_models/arm/yam_ultra/README.md -> i2rt/robot_models/arm/yam_ultra/v1/README.md: move and update the arm documentation from i2rt/robot_models/arm/yam_ultra/README.md to the versioned v1 path i2rt/robot_models/arm/yam_ultra/v1/README.md
  • i2rt/robot_models/arm/yam_ultra/assets/base.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/base.stl: move the base.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/base.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/base.stl
  • i2rt/robot_models/arm/yam_ultra/assets/gripper.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/gripper.stl: move the gripper.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/gripper.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/gripper.stl
  • i2rt/robot_models/arm/yam_ultra/assets/link1.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/link1.stl: move the link1.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/link1.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/link1.stl
  • i2rt/robot_models/arm/yam_ultra/assets/link2.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/link2.stl: move the link2.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/link2.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/link2.stl
  • i2rt/robot_models/arm/yam_ultra/assets/link3.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/link3.stl: move the link3.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/link3.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/link3.stl
  • i2rt/robot_models/arm/yam_ultra/assets/link4.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/link4.stl: move the link4.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/link4.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/link4.stl
  • i2rt/robot_models/arm/yam_ultra/assets/link5.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/link5.stl: move the link5.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/link5.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/link5.stl
  • i2rt/robot_models/arm/yam_ultra/assets/tip_left.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/tip_left.stl: move the tip_left.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/tip_left.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/tip_left.stl
  • i2rt/robot_models/arm/yam_ultra/assets/tip_right.stl -> i2rt/robot_models/arm/yam_ultra/v1/assets/tip_right.stl: move the tip_right.stl mesh from i2rt/robot_models/arm/yam_ultra/assets/tip_right.stl to the versioned v1 asset path i2rt/robot_models/arm/yam_ultra/v1/assets/tip_right.stl
  • i2rt/robot_models/arm/yam_ultra/yam_ultra.urdf -> i2rt/robot_models/arm/yam_ultra/v1/yam_ultra.urdf: move the URDF source from i2rt/robot_models/arm/yam_ultra/yam_ultra.urdf to the versioned v1 path i2rt/robot_models/arm/yam_ultra/v1/yam_ultra.urdf
  • i2rt/robot_models/arm/yam_ultra/yam_ultra.xml -> i2rt/robot_models/arm/yam_ultra/v1/yam_ultra.xml: move the MJCF model from i2rt/robot_models/arm/yam_ultra/yam_ultra.xml to i2rt/robot_models/arm/yam_ultra/v1/yam_ultra.xml and retain the v1-aligned model
  • i2rt/robot_models/arm/yam_ultra/v2/README.md: document YAM Ultra v2 kinematics, inertial properties, frames, and model conventions
  • i2rt/robot_models/arm/yam_ultra/v2/assets/base.stl: add the YAM Ultra v2 base.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/gripper.stl: add the YAM Ultra v2 gripper.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/link1.stl: add the YAM Ultra v2 link1.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/link2.stl: add the YAM Ultra v2 link2.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/link3.stl: add the YAM Ultra v2 link3.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/link4.stl: add the YAM Ultra v2 link4.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/link5.stl: add the YAM Ultra v2 link5.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/tip_left.stl: add the YAM Ultra v2 tip_left.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/assets/tip_right.stl: add the YAM Ultra v2 tip_right.stl mesh asset
  • i2rt/robot_models/arm/yam_ultra/v2/yam_ultra.urdf: add the YAM Ultra v2 URDF source model
  • i2rt/robot_models/arm/yam_ultra/v2/yam_ultra.xml: add the generated YAM Ultra v2 MuJoCo model
  • i2rt/robots/config/big_yam.yml -> i2rt/robots/config/big_yam_v1.yml: rename i2rt/robots/config/big_yam.yml to i2rt/robots/config/big_yam_v1.yml so the arm configuration is explicitly versioned as v1
  • i2rt/robots/config/crank_4310.yml: key terminal-mount transforms by arm model version for the crank gripper
  • i2rt/robots/config/flexible_4310.yml: key terminal-mount transforms by arm model version for the flexible gripper
  • i2rt/robots/config/linear_3507.yml: key terminal-mount transforms by arm model version for the 3507 linear gripper
  • i2rt/robots/config/linear_4310.yml: key terminal-mount transforms by arm model version for the 4310 linear gripper
  • i2rt/robots/config/no_gripper.yml: key terminal-mount transforms by arm model version for arm-only assemblies
  • i2rt/robots/config/yam_pro.yml -> i2rt/robots/config/yam_pro_v1.yml: rename i2rt/robots/config/yam_pro.yml to i2rt/robots/config/yam_pro_v1.yml so the arm configuration is explicitly versioned as v1
  • i2rt/robots/config/yam_teaching_handle.yml: key terminal-mount transforms by arm model version for the teaching handle
  • i2rt/robots/config/yam_ultra.yml -> i2rt/robots/config/yam_ultra_v1.yml: rename i2rt/robots/config/yam_ultra.yml to i2rt/robots/config/yam_ultra_v1.yml so the arm configuration is explicitly versioned as v1
  • i2rt/robots/config/yam_ultra_v2.yml: add motor, gain, direction, and gravity-compensation configuration for YAM Ultra v2
  • i2rt/robots/config/yam.yml -> i2rt/robots/config/yam_v1.yml: rename i2rt/robots/config/yam.yml to i2rt/robots/config/yam_v1.yml so the arm configuration is explicitly versioned as v1
  • i2rt/robots/get_robot.py: thread the requested hardware version through robot configuration and model selection
  • i2rt/robots/motor_chain_robot.py: add timestamped joint command and observation recording support
  • i2rt/robots/tests/test_assembly.py: cover version-aware arm and gripper model composition
  • i2rt/robots/tests/test_motor_chain_recording.py: cover motor-chain command and observation recording behavior
  • i2rt/robots/tests/test_onshape_normalization.py: cover deterministic ONShape URDF normalization behavior
  • i2rt/robots/tests/test_robot_variants.py: cover versioned arm configuration and model selection
  • i2rt/robots/tests/test_urdf_mjcf_alignment.py: validate home-pose URDF and MJCF alignment across versioned arm models
  • i2rt/robots/tests/test_urdf_mjcf_posed_alignment.py: validate posed URDF and MJCF alignment across versioned arm models
  • i2rt/robots/utils.py: implement version-aware arm paths, config loading, and gripper mount composition
  • i2rt/utils/recording.py: add the MCAP-based robot command and observation recorder
  • i2rt/utils/tests/test_recording.py: cover recorder schema, timestamps, serialization, and close behavior
  • pyproject.toml: add the MCAP ROS 2 support dependency while retaining package version 1.1.2
  • uv.lock: lock the MCAP ROS 2 support dependency graph without changing the package version

How to Test

  • Run uv sync --locked in a fresh checkout and confirm dependency resolution succeeds without modifying uv.lock.
  • Run uv run ruff check . and confirm All checks passed!.
  • Run uv run pytest -n auto and confirm all tests pass; the verified release tree produced 374 passed and 2 skipped.
  • Run uv run pytest i2rt/robots/tests/test_robot_variants.py i2rt/robots/tests/test_assembly.py -v and confirm both v1 and v2 model/config selections pass.
  • Run uv run pytest i2rt/robots/tests/test_urdf_mjcf_alignment.py i2rt/robots/tests/test_urdf_mjcf_posed_alignment.py -v and confirm home and posed alignment checks pass across supported variants.
  • Run uv run pytest i2rt/robots/tests/test_motor_chain_recording.py i2rt/utils/tests/test_recording.py -v and confirm command, observation, timestamp, and close behavior passes.
  • Edge case: request an unsupported arm model version in the robot-variant tests and confirm it is rejected instead of silently falling back.
  • Inspect the PR file list and confirm no local settings, worktree state, caches, credentials, or generated environment files are included.

🤖 Generated with Claude Code

- i2rt/robot_models/: version existing arm models and add the YAM Ultra v2 model assets
- i2rt/robots/: add version-aware assembly, recording support, configuration updates, and coverage
- examples/: update MuJoCo, Viser, and minimum-gello workflows for the synchronized APIs
- .agents/, .claude/, .codex/: synchronize URDF and MJCF alignment workflows
- pyproject.toml and uv.lock: synchronize the dev dependency set while retaining package version 1.1.2

Co-authored-by: Codex <noreply@openai.com>
@nu-jliu
nu-jliu merged commit b9d8704 into main Aug 6, 2026
2 checks passed
@nu-jliu
nu-jliu deleted the release/v1.3.0 branch August 6, 2026 02:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant